假设我执行system("ps-C nautilus");
如何在char *中返回此函数的结果?
谢谢。
答案 0 :(得分:7)
你没有。不确定您所使用的平台,但请查看popen
功能。您将以这种方式获得双向管道,您可以对其执行文件操作,例如读取以从中获取字符串。
答案 1 :(得分:1)
如果您的编译器支持popen()的某种变体,则可以非常轻松地重定向输出。
注意事项:
char *RunProg(const char *szCmdLine) { size_t nSize=512; size_t nUsed=0; char *szOut = malloc(nSize); FILE *fp = _popen(szCmdLine, "r"); char szBuff[128]; while( !feof( fp ) ) { if( fgets( szBuff, sizeof(szBuff), fp ) != NULL ) { nUsed += strlen(szBuff); if (nUsed >= nSize) { nSize += nUsed; szOut = realloc(szOut, nSize); } strcat(szOut, szBuff); } } _pclose(fp); return szOut; }
答案 2 :(得分:-1)
最简单的解决方案可能是这样的:
system("ps-C nautilus > /tmp/data.txt");
然后打开文件并阅读内容。
<强>更新强> 显然你不会使用硬编码的文件名。在上面的代码中,我只是说明了这种技术。有很多方法可以确保您的文件名是唯一的。