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;








2















(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);










share|improve this question



















  • 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 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


















2















(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);










share|improve this question



















  • 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 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














2












2








2








(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);










share|improve this question
















(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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 25 at 16:15







Theo Stef

















asked Mar 24 at 23:38









Theo StefTheo Stef

115




115







  • 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 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













  • 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 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








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













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
);



);













draft saved

draft discarded


















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















draft saved

draft discarded
















































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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

How to preserve electronics (computers, tablets and phones) for hundreds of years Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) The network's official Twitter account is up and running again. What content…How might modern humans leave a message for 50,000 years?How would an aquatic race develop computers?How do we make computers care for human life?Keeping supplies for 1000 yearsWhat will cell phones become in 100 years?What body armor protects against a laser?Could a society attain 1800s technology if limited to using copper and bronze?Electricity power (magic) and electronicsScavenging metal resources in post-apocalypse after 100 yearsWhy would precursors create devices that can survive and still work after hundreds of years?

155 수학 과학 기타 둘러보기 메뉴eh추가해eh문서를 완성해

Convert JSON to MapSimplest way to convert a string representing JSON array into Java array List of key value pairsHow to take String JSON values into HashMapConvert a JSON String to a HashMapCreating BSON object from JSON stringJSONObject - How to get a value ?Better Map ConstructorReading JSON from Url javaUpdate columns if input values are not null otherwise ignore and keep the existing values of column in databaseHow to store object represented as Json string into Couchbase Lite?Go JSON into MapHow do I efficiently iterate over each entry in a Java Map?Sort a Map<Key, Value> by valuesHow to round a number to n decimal places in JavaCan comments be used in JSON?How do I read / convert an InputStream into a String in Java?How can I pretty-print JSON in a shell script?What is the correct JSON content type?How can I deserialize JSON to a simple Dictionary<string,string> in ASP.NET?Why does Google prepend while(1); to their JSON responses?Parse JSON in JavaScript?