繁体   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