0
请对这个码一看: “Hello World” 的Solaris对popen有问题吗?
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int main() {
FILE *process_fp = popen("make -f -", "w");
if (process_fp == NULL) {
printf("[ERR] make not found!\n");
} else {
char txt[1024] = "all:\n\[email protected] Hello World!\n";
fwrite(txt, sizeof(char), strlen(txt), process_fp);
pclose(process_fp);
}
}
该程序将打印。它适用于Linux平台,但在Solaris上失败,它在此投诉:make: *** fopen (temporary file): No such file or directory. Stop.
。
我该如何解决这个问题?
只是一个相关说明,在操作系统或编译器中发现一个错误是很少见的。所以当你从心态开始时,一定会有一些代码出现问题。记住“Select is not broken”(来自“Pragmatic Programmer”的提示)。另见:http://www.travisswicegood.com/index.php/2009/01/04/select-isn-t-broken – sateesh 2009-12-09 09:22:05
对我来说,(opensolaris 2008.11在x86上)和Linux一样工作 – Kimvais 2009-12-09 09:25:14
Works对于我在SPARC上的Solaris 10上,尽管编译器正确指出您忘记了strlen()的#include。 你遇到什么版本的Solaris? 在$ PATH中找到了什么版本的make? (Solaris make或GNU make) –
alanc
2009-12-09 15:07:29