簡體   English   中英

從C程序中的linux命令獲取返回碼

[英]Get return code from linux command in C program

我基本上是在嘗試檢查特定文件是否存在。 為此,我使用了Unix的test命令。

 sprintf(execbuf, "%s if test -r %s ; then true; else exit; fi;",
         execbuf, st->file, NO_FILE);

它工作正常,但是如果文件不在此處,我不想退出,而是應該返回FAIL。

我不知道如何使程序返回失敗。 我當時正在考慮使用上述命令中的退出代碼,但仍然無法弄清楚如何在程序中的Linux命令之外使用該退出代碼。

我建議您寧可只使用access ()調用,也不要執行外部shell命令來解決此問題。

請注意,這種情況受競爭條件的影響-調用access()時該文件可能存在(或執行確定該文件是否存在的shell命令),但是稍后您實際需要它時,該文件可能會消失。 如果這對您來說是個問題,只需打開()文件,然后在以后實際需要I / O時使用文件描述符。

如果您不喜歡現在的工作,那么建議您使用stat:

#include <sys/stat.h>
#include <stdio.h>

int main (int argc, char** argv[])
{
  struct stat sts;
  if (stat(argv[1], &sts) == -1 && errno == ENOENT)
      printf ("The file %s doesn't exist...\n", argv [1]);
  else
      printf("The file exists\n");

這將告訴您它是否存在。 如果您不想通過命令行,則參數1是const char *,因此只需將文件名傳遞給它即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM