diff options
author | Detlev Casanova <detlev.casanova@gmail.com> | 2010-07-05 11:23:47 +0200 |
---|---|---|
committer | Detlev Casanova <detlev.casanova@gmail.com> | 2010-07-05 11:23:47 +0200 |
commit | 06a8e3c2fa213dfd59088772d24ae62b81000a50 (patch) | |
tree | 28243de909cba997bccc5ae16cfe991fe807fd8b | |
parent | 605ef77a507f23ef3e18072ae40870abb56f3364 (diff) | |
download | layman-06a8e3c2fa213dfd59088772d24ae62b81000a50.tar.gz layman-06a8e3c2fa213dfd59088772d24ae62b81000a50.tar.bz2 layman-06a8e3c2fa213dfd59088772d24ae62b81000a50.zip |
Runner working
-rw-r--r-- | src/runner.c | 51 |
1 files changed, 43 insertions, 8 deletions
diff --git a/src/runner.c b/src/runner.c index 08433a6..ddf20d2 100644 --- a/src/runner.c +++ b/src/runner.c @@ -33,6 +33,7 @@ int main(int argc, char* argv[]) Runner *r = createRunner(); r->writeStdout = stdoutWritten; int ret = execute(r, str); + if (ret < 0) printf("Execution error\n"); @@ -59,12 +60,43 @@ int execute(Runner *r, char *args) if (ret > 0) { printf("New PID = %d\n", ret); + // Listening socket + int fd = socket(AF_INET, SOCK_STREAM, 0); + if (fd < 0) + printf("ERROR opening socket\n"); + + struct sockaddr_in serv_addr; + + memset(&serv_addr, 0, sizeof(serv_addr)); + + int portno = 5555; + serv_addr.sin_family = AF_INET; + serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); + serv_addr.sin_port = htons(portno); + + if ((ret = bind(fd, (struct sockaddr *) &serv_addr, sizeof(serv_addr))) < 0) + { + printf("ERROR on binding : %d, %d (%s)\n", ret, errno, strerror(errno)); + return ret; + } + + if ((ret = listen(fd, 5)) < 0) + printf("ERROR on listening : %d, %d (%s)\n", ret, errno, strerror(errno)); + + while(1) + { + unsigned int clilen = sizeof(serv_addr); + int newfd = accept(fd, (struct sockaddr *) &serv_addr, &clilen); + + char buf[256]; + int n = read(newfd, buf, 255); + buf[n] = '\0'; + printf("received : %s\n", buf); + } + return ret; } - //printf("args = %s\n", args); - //int fd = open("out.txt", O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); - int fd = socket(AF_INET, SOCK_STREAM, 0); if (fd < 0) printf("ERROR opening socket\n"); @@ -72,15 +104,18 @@ int execute(Runner *r, char *args) struct sockaddr_in serv_addr; memset(&serv_addr, 0, sizeof(serv_addr)); + int portno = 5555; serv_addr.sin_family = AF_INET; - serv_addr.sin_addr.s_addr = INADDR_ANY; + serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); serv_addr.sin_port = htons(portno); - if (connect(fd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) - printf("ERROR on connecting\n"); - //listen(fd, 5); - + if ((ret = connect(fd, (struct sockaddr *) &serv_addr, sizeof(serv_addr))) < 0) + { + printf("ERROR on connecting : %d, %d (%s)\n", ret, errno, strerror(errno)); + return ret; + } + dup2(fd, STDOUT_FILENO); ret = execl("/home/detlev/src/c-portage/src/test.py", "test.py", "app-portage/kuroo4-4.2", "app-portage/kuroo4-4.3", NULL); printf("execl: (%d) %s\n", errno, strerror(errno)); |