Q: Program to implement a Posix Semaphore
Os: Linux Ubuntu 16.04 LTS
Compiler: g++
Os: Linux Ubuntu 16.04 LTS
Compiler: g++
Code:
using namespace std;
#include <spawn.h>
#include <stdio.h>
#include <errno.h>
#include <iostream>
int main()
{
posix_spawnattr_t X;
posix_spawn_file_actions_t Y;
pid_t Pid,Pid2;
char * argv[] = {"/bin/ps","-lf",NULL};
char * envp[] = {"PROCESSES=2"};
posix_spawnattr_init(&X);
posix_spawn_file_actions_init(&Y);
char s1 []= "mkdir ";
char s2[] = " temp";
char *sa1[]= {s1,s2,NULL};
int v1 = posix_spawn(&Pid2,"/bin/mkdir",NULL,NULL,sa1,NULL);
perror("posix_spawn for mkdir");
posix_spawn(&Pid,"/bin/ps",&Y,&X,argv,envp);
perror("posix_spawn for ps");
/*The perror() function produces a message on standard error describing
the last error encountered during a call to a system or library
function.*/
cout << "Ps:spawned PID: " << Pid << endl;
cout << "mkdir:spawned PID: " << Pid2 << endl;
return(0);
}
/*Output
usr@comp:~$ g++ posix_spawn.cpp
posix_spawn.cpp: In function ‘int main()’:
posix_spawn.cpp:13:41: warning: deprecated conversion from string constant to ‘char*’
[-Wwrite-strings]
char * argv[] = {"/bin/ps","-lf",NULL};
^
posix_spawn.cpp:13:41: warning: deprecated conversion from string constant to ‘char*’
[-Wwrite-strings]
posix_spawn.cpp:14:34: warning: deprecated conversion from string constant to ‘char*’
[-Wwrite-strings]
char * envp[] = {"PROCESSES=2"};
^
usr@comp:~$ ./a.out
posix_spawn for mkdir: Success
posix_spawn for ps: Success
Ps:spawned PID: 7451
mkdir:spawned PID: 7450
usr@comp:~$ F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
0 S usr 7407 7399 0 80 0 - 6747 wait_w 23:49 pts/0 00:00:00 bash
0 R usr 7451 1687 0 80 0 - 3893 - 23:50 pts/0 00:00:00 /bin/
^C
usr@comp:~$ ls -l|grep temp
drwxrwxr-x 2 usr usr 4096 Mar 31 23:50 temp
*/
0 comments:
Post a Comment