如何使用C在Linux中获取Popen系统命令调用执行错误

时间:2019-01-22 07:42:35

标签: c linux unix

char buffer[ 256 + 1 ];
char command[ 256 + 1 ];
FILE *p;
int fd = open(".", O_RDONLY);
chdir("/home/user/");
memset( command , 0, sizeof( command ));
sprintf( command, "unzip %s", "file.zip" );
p = popen(command, "r");
if(!p)
{
        fprintf(stderr, "Error opening pipe.\n");
        return;
}

memset( buffer, 0, sizeof( buffer ));
char *ptr = buffer;
while(!feof(p))
{
        fread( ptr, 1, 1, p );
        ptr++;
}
printf ("buffer(%s)\n", buffer );
if (pclose(p) == -1)
{
        fprintf(stderr," Error in closing pipe!\n");
        return;
}
fchdir(fd);

我正在编写一个程序来使用路径中不存在的popen解压缩文件(file.zip)。当我运行程序时,我的外壳会显示此错误消息。

unzip:  cannot find or open refresh.zip

这是正确的。我想在我的代码中捕获此错误消息。我该怎么办?

0 个答案:

没有答案