The Pth 1.4.1 manual states that system() is supported in the
"Soft System Call Mapping", but in fact it is omitted (as an
oversight, I think).
Build Pth with --enable-syscall-soft, then compile this test
program with -E to show the preprocessed code:
#include "pthread.h"
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main() {
const char* msg = "... calling write() explicitly\n";
pthread_t dummy = pthread_self();
int rc = system("/bin/echo jls");
fprintf(stderr,"... after system call, rc %d\n", rc);
write(2, msg, strlen(msg));
}
You'll see that write has become __pthread_write, but system
is still system.
The fixes are to pthread.h.in:
--- pthread.h.in..orig Sun Jan 27 06:03:41 2002
+++ pthread.h.in Tue Oct 15 12:15:21 2002
@@ -503,6 +504,7 @@
#if _POSIX_THREAD_SYSCALL_SOFT && !defined(_PTHREAD_PRIVATE)
#define fork __pthread_fork
#define sleep __pthread_sleep
+#define system __pthread_system
#define sigwait __pthread_sigwait
#define waitpid __pthread_waitpid
#define connect __pthread_connect
and pthread.c:
--- pthread.c..orig Thu Sep 12 15:13:15 2002
+++ pthread.c Tue Oct 15 12:17:57 2002
@@ -1057,6 +1057,12 @@
return pth_sleep(sec);
}
+int __pthread_system(const char *cmd)
+{
+ pthread_initialize();
+ return pth_system(cmd);
+}
+
int __pthread_sigwait(const sigset_t *set, int *sig)
{
pthread_initialize();
Jonathan Schilling SCO/Caldera [EMAIL PROTECTED]
______________________________________________________________________
GNU Portable Threads (Pth) http://www.gnu.org/software/pth/
User Support Mailing List [EMAIL PROTECTED]
Automated List Manager (Majordomo) [EMAIL PROTECTED]