assign children pid's created in a loop to an arrayWith arrays, why is it the case that a[5] == 5[a]?Parent process doesn't complete after child is terminated in CProgram run in child process doesn't loopDifference between the address space of parent process and its child process in Linux?Why are elementwise additions much faster in separate loops than in a combined loop?how to kill parent and child process through shell?Killing a child process from a signal handlerLearning to fork() idle processes in C++Loading pid_t into an array for use OUTSIDE of forked process C/linuxFork() child processes with signals
If absolute velocity does not exist, how can we say a rocket accelerates in empty space?
Which game is this?
Why would a car salesman tell me not to get my credit pulled again?
Why did the Death Eaters wait to reopen the Chamber of Secrets?
How do I type a hyphen in iOS 12?
Why would a home insurer offer a discount based on credit score?
Why does the PoissonDistribution not plot around its mean for moderate large numbers?
Must CPU have a GPU if motherboard provides display port (when no separate video card)?
Is Jesus the last Prophet?
Can an open source licence be revoked if it violates employer's IP?
How can you estimate a spike story?
Suppose leased car is totalled: what are financial implications?
how to fix error not showing in magento 2
A life of PhD: is it feasible?
Why is the concept of the Null hypothesis associated with the student's t distribution?
Idiom for 'person who gets violent when drunk"
Is tuition reimbursement a good idea if you have to stay with the job
Does a single fopen introduce TOCTOU vulnerability?
The best in flight meal option for those suffering from reflux
Make Gimbap cutter
Fixed-Do Solfege in A Major scale with accidentals
Is fission/fusion to iron the most efficient way to convert mass to energy?
That's not my X, its Y is too Z
What is Gilligan's full Name?
assign children pid's created in a loop to an array
With arrays, why is it the case that a[5] == 5[a]?Parent process doesn't complete after child is terminated in CProgram run in child process doesn't loopDifference between the address space of parent process and its child process in Linux?Why are elementwise additions much faster in separate loops than in a combined loop?how to kill parent and child process through shell?Killing a child process from a signal handlerLearning to fork() idle processes in C++Loading pid_t into an array for use OUTSIDE of forked process C/linuxFork() child processes with signals
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
(Edited: fixed some stuff based on your comments but still not results i need- some procesess get orphaned and get parent init(pid 1), is it because termination loop is inside the other loop? how else could i activate and terminate on the same loop that i forked? )
In the following code, I need to print the pid's created with fork() in the loop in a message when a signal is sent to the process but I get the default value for all pid's (0). The homework involved sending signals to the child processes according to the arguments series ie ./a.out 1 3 5 4 2 will have to send signals to child processes 1 3 5 4 2 in that order and print their pid in that order also.
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
/*SIGCHLD, SIGCONT*/
int status;
static int alarmOn = 0;
int main(int argc, char **argv)
pid_t pid[5], f;
void activateChild(int signal)
alarmOn = 1;
(void) signal(SIGCONT,activateChild);
for(int i = 0; i < 5; i++)
f = fork();
if (f < 0 )
printf("nfork failedn");
if (f == 0)
printf("nprocess %d, %d is pausedn",i,getpid());
pause();
if (f > 0)
pid[i]=f;
kill(pid[atoi(argv[i])],SIGCONT);
if(alarmOn)
printf("nchild %s pid: %d is executed %dn ",argv[i+1],pid[atoi(argv[i+1])],i);
sleep(3);
kill(pid[atoi(argv[i+1])],SIGCHLD);
exit(0);
return(0);
c fork
|
show 4 more comments
(Edited: fixed some stuff based on your comments but still not results i need- some procesess get orphaned and get parent init(pid 1), is it because termination loop is inside the other loop? how else could i activate and terminate on the same loop that i forked? )
In the following code, I need to print the pid's created with fork() in the loop in a message when a signal is sent to the process but I get the default value for all pid's (0). The homework involved sending signals to the child processes according to the arguments series ie ./a.out 1 3 5 4 2 will have to send signals to child processes 1 3 5 4 2 in that order and print their pid in that order also.
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
/*SIGCHLD, SIGCONT*/
int status;
static int alarmOn = 0;
int main(int argc, char **argv)
pid_t pid[5], f;
void activateChild(int signal)
alarmOn = 1;
(void) signal(SIGCONT,activateChild);
for(int i = 0; i < 5; i++)
f = fork();
if (f < 0 )
printf("nfork failedn");
if (f == 0)
printf("nprocess %d, %d is pausedn",i,getpid());
pause();
if (f > 0)
pid[i]=f;
kill(pid[atoi(argv[i])],SIGCONT);
if(alarmOn)
printf("nchild %s pid: %d is executed %dn ",argv[i+1],pid[atoi(argv[i+1])],i);
sleep(3);
kill(pid[atoi(argv[i+1])],SIGCHLD);
exit(0);
return(0);
c fork
1
useatoi(argv[j])to convert a parameter string to a number.
– Ctx
Mar 24 at 23:51
and you probably shouldn't hardcode for 5 arguments, but utilize argc.
– Ctx
Mar 24 at 23:52
This doesn't even compile. Please copy paste the exact code you are using.
– Ring Ø
Mar 25 at 0:00
@RingØ This is one of the rare posts, which indeed are close to an MCVE. Just because a single character got lost doesn't negate that. +1 from me. (just the indention could be improved ;)
– Ctx
Mar 25 at 0:03
1
Remember array indexing in C is zero based. When you declarepid_t pid[5], you are allowed to accesspid[0]throughpid[4], but instead you accesspid[1]throughpid[5], and the last of these is out of bounds.
– Nate Eldredge
Mar 25 at 0:30
|
show 4 more comments
(Edited: fixed some stuff based on your comments but still not results i need- some procesess get orphaned and get parent init(pid 1), is it because termination loop is inside the other loop? how else could i activate and terminate on the same loop that i forked? )
In the following code, I need to print the pid's created with fork() in the loop in a message when a signal is sent to the process but I get the default value for all pid's (0). The homework involved sending signals to the child processes according to the arguments series ie ./a.out 1 3 5 4 2 will have to send signals to child processes 1 3 5 4 2 in that order and print their pid in that order also.
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
/*SIGCHLD, SIGCONT*/
int status;
static int alarmOn = 0;
int main(int argc, char **argv)
pid_t pid[5], f;
void activateChild(int signal)
alarmOn = 1;
(void) signal(SIGCONT,activateChild);
for(int i = 0; i < 5; i++)
f = fork();
if (f < 0 )
printf("nfork failedn");
if (f == 0)
printf("nprocess %d, %d is pausedn",i,getpid());
pause();
if (f > 0)
pid[i]=f;
kill(pid[atoi(argv[i])],SIGCONT);
if(alarmOn)
printf("nchild %s pid: %d is executed %dn ",argv[i+1],pid[atoi(argv[i+1])],i);
sleep(3);
kill(pid[atoi(argv[i+1])],SIGCHLD);
exit(0);
return(0);
c fork
(Edited: fixed some stuff based on your comments but still not results i need- some procesess get orphaned and get parent init(pid 1), is it because termination loop is inside the other loop? how else could i activate and terminate on the same loop that i forked? )
In the following code, I need to print the pid's created with fork() in the loop in a message when a signal is sent to the process but I get the default value for all pid's (0). The homework involved sending signals to the child processes according to the arguments series ie ./a.out 1 3 5 4 2 will have to send signals to child processes 1 3 5 4 2 in that order and print their pid in that order also.
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
/*SIGCHLD, SIGCONT*/
int status;
static int alarmOn = 0;
int main(int argc, char **argv)
pid_t pid[5], f;
void activateChild(int signal)
alarmOn = 1;
(void) signal(SIGCONT,activateChild);
for(int i = 0; i < 5; i++)
f = fork();
if (f < 0 )
printf("nfork failedn");
if (f == 0)
printf("nprocess %d, %d is pausedn",i,getpid());
pause();
if (f > 0)
pid[i]=f;
kill(pid[atoi(argv[i])],SIGCONT);
if(alarmOn)
printf("nchild %s pid: %d is executed %dn ",argv[i+1],pid[atoi(argv[i+1])],i);
sleep(3);
kill(pid[atoi(argv[i+1])],SIGCHLD);
exit(0);
return(0);
c fork
c fork
edited Mar 25 at 16:15
Theo Stef
asked Mar 24 at 23:38
Theo StefTheo Stef
115
115
1
useatoi(argv[j])to convert a parameter string to a number.
– Ctx
Mar 24 at 23:51
and you probably shouldn't hardcode for 5 arguments, but utilize argc.
– Ctx
Mar 24 at 23:52
This doesn't even compile. Please copy paste the exact code you are using.
– Ring Ø
Mar 25 at 0:00
@RingØ This is one of the rare posts, which indeed are close to an MCVE. Just because a single character got lost doesn't negate that. +1 from me. (just the indention could be improved ;)
– Ctx
Mar 25 at 0:03
1
Remember array indexing in C is zero based. When you declarepid_t pid[5], you are allowed to accesspid[0]throughpid[4], but instead you accesspid[1]throughpid[5], and the last of these is out of bounds.
– Nate Eldredge
Mar 25 at 0:30
|
show 4 more comments
1
useatoi(argv[j])to convert a parameter string to a number.
– Ctx
Mar 24 at 23:51
and you probably shouldn't hardcode for 5 arguments, but utilize argc.
– Ctx
Mar 24 at 23:52
This doesn't even compile. Please copy paste the exact code you are using.
– Ring Ø
Mar 25 at 0:00
@RingØ This is one of the rare posts, which indeed are close to an MCVE. Just because a single character got lost doesn't negate that. +1 from me. (just the indention could be improved ;)
– Ctx
Mar 25 at 0:03
1
Remember array indexing in C is zero based. When you declarepid_t pid[5], you are allowed to accesspid[0]throughpid[4], but instead you accesspid[1]throughpid[5], and the last of these is out of bounds.
– Nate Eldredge
Mar 25 at 0:30
1
1
use
atoi(argv[j]) to convert a parameter string to a number.– Ctx
Mar 24 at 23:51
use
atoi(argv[j]) to convert a parameter string to a number.– Ctx
Mar 24 at 23:51
and you probably shouldn't hardcode for 5 arguments, but utilize argc.
– Ctx
Mar 24 at 23:52
and you probably shouldn't hardcode for 5 arguments, but utilize argc.
– Ctx
Mar 24 at 23:52
This doesn't even compile. Please copy paste the exact code you are using.
– Ring Ø
Mar 25 at 0:00
This doesn't even compile. Please copy paste the exact code you are using.
– Ring Ø
Mar 25 at 0:00
@RingØ This is one of the rare posts, which indeed are close to an MCVE. Just because a single character got lost doesn't negate that. +1 from me. (just the indention could be improved ;)
– Ctx
Mar 25 at 0:03
@RingØ This is one of the rare posts, which indeed are close to an MCVE. Just because a single character got lost doesn't negate that. +1 from me. (just the indention could be improved ;)
– Ctx
Mar 25 at 0:03
1
1
Remember array indexing in C is zero based. When you declare
pid_t pid[5], you are allowed to access pid[0] through pid[4], but instead you access pid[1] through pid[5], and the last of these is out of bounds.– Nate Eldredge
Mar 25 at 0:30
Remember array indexing in C is zero based. When you declare
pid_t pid[5], you are allowed to access pid[0] through pid[4], but instead you access pid[1] through pid[5], and the last of these is out of bounds.– Nate Eldredge
Mar 25 at 0:30
|
show 4 more comments
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55329624%2fassign-children-pids-created-in-a-loop-to-an-array%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55329624%2fassign-children-pids-created-in-a-loop-to-an-array%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
use
atoi(argv[j])to convert a parameter string to a number.– Ctx
Mar 24 at 23:51
and you probably shouldn't hardcode for 5 arguments, but utilize argc.
– Ctx
Mar 24 at 23:52
This doesn't even compile. Please copy paste the exact code you are using.
– Ring Ø
Mar 25 at 0:00
@RingØ This is one of the rare posts, which indeed are close to an MCVE. Just because a single character got lost doesn't negate that. +1 from me. (just the indention could be improved ;)
– Ctx
Mar 25 at 0:03
1
Remember array indexing in C is zero based. When you declare
pid_t pid[5], you are allowed to accesspid[0]throughpid[4], but instead you accesspid[1]throughpid[5], and the last of these is out of bounds.– Nate Eldredge
Mar 25 at 0:30