001
18.04.2007, 15:39 Uhr
0xdeadbeef
Gott (Operator)
|
system gibts auch unter DOS. Allerdings wär ich damit äußerst vorsichtig, in aller Regel empfiehlt es sich, wenn man denn unbedingt andere Programme aufrufen muss, das mit exec* zu tun. Mit system kriegst du arge Probleme, wenn dir zum Beispiel jemand "; rm -rf ~; ./wgrib foo.dwd" als dwdname unterschiebt. Besser so:
C++: |
#define _USE_BSD #include <fcntl.h> #include <sys/resource.h> #include <sys/stat.h> #include <sys/types.h> #include <sys/wait.h> #include <unistd.h>
int main(void) { pid_t pid = fork();
if(pid == 0) { int fd = open("../data/output.txt", O_WRONLY | O_CREAT, 0644); dup2(fd, 1); close(fd);
execl("./wgrib", dwdname, "-V", NULL); } else { int status; wait4(pid, &status, WNOHANG, NULL); }
return 0; }
|
-- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |