Using the Clone() System Call
Joey Bernard is a self-described uber-geek. He has one degree in physics and is working on a second degree in computer science. He hopes to become a fully ordained priest of the Church of Tux. All donations will be accepted.
email: ljeditors@ssc.com
Joey Bernard has a background in both physics and computer science. This serves him well in his day job as a computational research consultant at the University of New Brunswick. He also teaches computational physics and parallel programming.
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Sponsored by AMD
Built-in forensics, incident response, and security with Red Hat Enterprise Linux 6
Every security policy provides guidance and requirements for ensuring adequate protection of information and data, as well as high-level technical and administrative security requirements for a system in a given environment. Traditionally, providing security for a system focuses on the confidentiality of the information on it. However, protecting the data integrity and system and data availability is just as important. For example, when processing United States intelligence information, there are three attributes that require protection: confidentiality, integrity, and availability.
Learn more about catching the bad guy in this free white paper.
Sponsored by DLT Solutions
Free Webinar: Hadoop
How to Build an Optimal Hadoop Cluster to Store and Maintain Unlimited Amounts of Data Using Microservers
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Some of key questions to be discussed are:
- What is the “typical” Hadoop cluster and what should be installed on the different machine types?
- Why should you consider the typical workload patterns when making your hardware decisions?
- Are all microservers created equal for Hadoop deployments?
- How do I plan for expansion if I require more compute, memory, storage or networking?
| Designing Electronics with Linux | May 22, 2013 |
| Dynamic DNS—an Object Lesson in Problem Solving | May 21, 2013 |
| Using Salt Stack and Vagrant for Drupal Development | May 20, 2013 |
| Making Linux and Android Get Along (It's Not as Hard as It Sounds) | May 16, 2013 |
| Drupal Is a Framework: Why Everyone Needs to Understand This | May 15, 2013 |
| Home, My Backup Data Center | May 13, 2013 |
- seo services in india
1 hour 19 min ago - For KDE install kio-mtp
1 hour 20 min ago - Evernote is much more...
3 hours 20 min ago - Reply to comment | Linux Journal
12 hours 5 min ago - Dynamic DNS
12 hours 39 min ago - Reply to comment | Linux Journal
13 hours 38 min ago - Reply to comment | Linux Journal
14 hours 28 min ago - Not free anymore
18 hours 30 min ago - Great
22 hours 17 min ago - Reply to comment | Linux Journal
22 hours 25 min ago



Comments
nice article
Good read .
I think when we use clone()
I think when we use clone() , it is a wrapper in C-library. Then after calling this wrapper , it in turn calls the actual clone(2) system call. If this is true then you have to mention it properly.
Looking for ur future & early updations, I remain.
Jayashree K J.
Bangalore ( NTPL ).
31st May, 2006.
How can Joey Bernard will be
How can Joey Bernard will be able to become a fully ordained priest of the Church of Tux, because his current profession is as a computer scientist ???????
How can Joey Bernard will be
How can Joey Bernard will be able to become a fully ordained priest of the Church of Tux, because his current profession is as a computer scientist ???????
Re: Using the Clone() System Call
WOW! i have been looking for manual for clone for weeeks!!! its been driving me up the wall!!!!!!!!!!!!!!!!!!! thankyou so much!!!
Leon
great article.
truely a good article.
Herr Fähnders, hier ist doch
Herr Fähnders, hier ist doch alles auf Englisch! :(((((
Hier ist die Uebersetzung:
Hier ist die Uebersetzung:
http://babelfish.altavista.com/babelfish/trurl_pagecontent?url=http%3A%2...
Viel Spass beim Lesen
Re: Using the Clone() System Call
I've come back from the proverbial grave. While googling myself, I came across this verrry old article I had written. With more experience under my belt, I realize I was very stupid in parts of this article. I will be posting a link to an updated version here in the next few weeks if anyone who finds this article wants a corrected version.
Re: Using the Clone() System Call
Please do post an updated version. I found this article very helpful.
Re: Using the Clone() System Call
Hi
Kindly send me updated link
Please do the necessary changes u r mentioning
also can u mention some link i could use for clone()
I am a university student
Thanks
Vipul
u03138@cs.unipune.ernet.in
Re: Using the Clone() System Call
I was wondering why in the source code (listing 2) do you use a void **, when void * could very well be used for the child stack pointer
Rohit
Hey, the stack grows downwards!
Hi,
I'm Pablo, a humble reader from Argentina.
I found your article very interesting, however I couldn't run the code from figure 2. I did compiled it, but the execution of the clone call, lead to a segmentation fault.
I took a look at the clone's man page and it said that the you should pass a pointer to the stack pointer of the task, not the beginning of the stack.
So, as the stack decreases, and it's empty when the thread begins, the right address would not be child_stack, but child_stack + 65383.
Only that way the code runs fine.
Hope it helps.
Regarding child_stack of clone
How you are calculating as 65383.
How much should we need to allocate for malloc.
how to calculate malloc size.
Re: Hey, the stack grows downwards!
Well, it worked for me. I overlooked the -static option to cc the first time and got a segmentation fault.
Re: Hey, the stack grows downwards!
Using:
child_stack + 65383
still segments for me. Where does 65383
come in? 4 * 16384 -> 65536 anyhow!
child_stack + 4000
works for me i.e. address is a definitely safe
one to use.
David (djjohn@essex.ac.uk)
Re: Hey, the stack grows downwards!
You should write instead:
#define CHILD_STACK_SIZE 16384
clone( child_process, child_stack + CHILD_STACK_SIZE / sizeof( void ** ), CLONE_VM | CLONE_FILES, NULL );
Which is equivalent to CHILD_STACK_SIZE / 4 on most systems.
Re: Hey, the stack grows downwards!
Hi I am manjeet,
even I faced the same problem (of segmentation fault) but
couldnt get out of it even after changing the child_stack pointer ...
Re: Using the Clone() System Call
I am Chupacabra! Fear my use of the Clone() System Call!
CNN.com