이 코드에 찾아 보게하십시오 : "안녕하세요"를이 프로그램이 인쇄됩니다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.
입니다.
이 문제를 어떻게 해결할 수 있습니까?
OS 나 컴파일러에서 버그를 발견하는 것은 드물다. 사고 방식으로 시작할 때 도움이되는 코드는 문제가 될 수있다. "선택은 깨지지 않았습니다"("실용적인 프로그래머"의 팁)을 기억하십시오. 참조 : http : //www.travisswicegood.com/index.php/2009/01/04/select-isn-t-broken – sateesh
나를 위해, (opensolaris 2008.11 x86) 이것은 리눅스에서와 마찬가지로 잘 작동합니다. – Kimvais
Works 나를 위해 SPARC의 Solaris 10에서도 컴파일러가 strlen()에 #include을 잊어 버렸다고 올바르게 지적했지만. 어떤 버전의 Solaris에서 문제가 발생합니까? $ PATH에 어떤 버전의 make가 있습니까? (Solaris make 또는 GNU make) –
alanc