繁体   English   中英

如何在C中执行shell命令?

[英]How to execute shell command in C?

我在C中执行shell命令时遇到问题。我想在C中执行shell命令,然后捕获shell命令的输出并进一步处理输出。 我使用以下代码来执行该功能。 但是,问题是当shell命令不会返回任何输出时,fgets()会返回垃圾信息吗?

为了解释一个例子,如果/ etc / version包含','分隔值,shell返回输出,fgets返回shell命令返回的值,但是当/ etc / version没有contian任何','分隔值时,shell不返回任何值,fgets返回垃圾信息。 是否有针对此问题的解决方法,或者是否有任何替代解决方案在C和捕获shell命令输出中执行shell命令?

char return_val[256];
FILE *fp = NULL;
char line[256];
memset (return_val, 0, 256);
/* set the defalut value */
strncpy (return_val, "N/A", 4);
char cmd[] = "if [ -f /etc/umts2100_version ]; then cut -d, -f1 -s /etc/umts2100_version ; fi";

/* Open the command for reading. */
fp = popen(cmd, "r");
if (fp != NULL) 
{
    /* read the line from file */
    fgets (line, 256, fp);
    if( line != NULL)
    {
            /* copy the data */
            strncpy(return_val, line, strnlen (line, 256)); 
        }
      /* close the file */ 
    pclose (fp);
}

您需要检查fgets的返回值。 您正在测试的指针永远不会为NULL,因为Fgets不会更改其参数。

if ( fgets (line, 256, fp) == NULL ) {
    // read failed
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM