Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
Search - "child process"
- Sure! What do you need?
Oh, it’s very simple, I just want to make a static webpage that shows a clock with the real time.
- Wait, why static? Why not dynamic?
I don’t know, I guess it’ll be easier.
- Well, maybe, but that’s boring, and if that’s boring you are not going to put in time, and if you’re not going to put in time, it’s going to be harder; so it’s better to start with something harder in order to make it easier.
You know that doesn’t make sense right?
Okay, so I want to parse this date first to make the clock be universal for all the regions.
- You’re not going to do that by yourself right? You know what they say, don’t repeat yourself!
But it’s just two lines.
- Don’t reinvent the wheel!
- One component per file!
- It happens, and you’ll get lost managing your files as well. You should use Webpack or Browserify for managing your modules.
- Yes, but some people still have previous versions of ECMAScript, so it wouldn’t be compatible.
Why is it called ECMAScript then?
- It’s called both ways. Anyways, after you install Webpack to manage your modules, you still need a module and dependency manager, such as bower, or node package manager or yarn.
What does that have to do with my page?
- So you can install AngularJS.
Oh, that’s great, so if I modify one sentence on a part of the page, it will automatically refresh the other part of the page which is related to the first one and viceversa?
- Exactly! Except two way data binding is not recommended, since you don’t want child components to edit the parent components of your app.
Then why make two way data binding in the first place?
- It’s backed up by Google. You just don’t get it do you?
I have installed AngularJS now, but it seems I have to redefine something called a... directive?
- AngularJS is old now, you should start using Angular, aka Angular 2.
But it’s the same name... wtf! Only 3 minutes have passed since we started talking, how are they in Angular 2 already?
- You mean 3.
Okay, I now know Angular 6.0, and use a component based architecture using only a one way data binding, I have read and started using the Design Patterns already described to solve my problem without reinventing the wheel using libraries such as lodash and D3 for a world map visualization of my clock as well as moment to parse the dates correctly. I also used ECMAScript 6 with Babel to secure backwards compatibility.
- That’s good.
- But did you use TypeScript?37
This is one of the best explanation I have ever seen for the difference between SIGTERM and SIGKILL.
Picture credit : www.itsfoss.com8
It finally hit me the other day.
I'm working on an IoT project for a late-stage ALS patient. The setup is that he has a tablet he controls with his eye movements, and he wants to be able to control furnishings in his room without relying on anyone else.
I set up a socket connection between his tablet and the Raspberry Pi. From there it was a simple matter of using GPIO to turn a lamp or fan on or off. I did the whole thing in C, even the socket programming on the Pi.
As I was finishing up the main control of the program on the Pi I realized that I need to be more certain of this than anything I've ever done before.
If something breaks, the client may be forced to go days without being able to turn his room light on, or his fan off.
Understand he is totally trapped in his own body so it's not like he can simply turn the fan off. The nursing staff are not particularly helpful and his wife is tied up a lot with work and their two small children so she can't spend all day every day doting on him.
Think of how annoying it is when you're trying to sleep and someone turns the light on in your room; now imagine you can't turn it off yourself, and it would take you about twenty minutes to tell someone to turn it off -- that is once you get their attention, again without being able to move any part of your body except your eyes.
As programmers and devs, it's a skill to do thorough testing and iron-out all the bugs. It is an entirely different experience when your client will be depending on what you're doing to drastically improve his quality of life, by being able to control his comfort level directly without relying on others -- that is, to do the simplest of tasks that we all take for granted.
Giving this man some independence back to his life is a huge honor; however, it carries the burden of knowing that I need to be damned confident in what I am doing, and that I have designed the system to recover from any catastrophe as quickly as possible.
In case you were wondering how I did it all: The Pi launches a wrapper for the socket connection on boot.
The wrapper launches the actual socket connection in a child process, then waits for it to exit. When the socket connection exits, the wrapper analyzes the cause for the exit.
If the socket connection exited safely -- by passing a special command from the tablet to the Pi -- then the wrapper exits the main function, which allows updating the Pi. If the socket connection exited unexpectedly, then the Pi reboots automatically -- which is the fastest way to return functionality and to safeguard against any resource leaks.
The socket program itself launches its own child process, which is an executable on the Pi. The data sent by the tablet is the name of the executable on the Pi. This allows a dynamic number of programs that can be controlled from the tablet, without having to reprogram the Pi, except for loding the executable onto it. If this child of the socket program fails, it will not disrupt its parent process, which is the socket program itself.13
fork() can fail: this is important
Ah, fork(). The way processes make more processes. Well, one of them, anyway. It seems I have another story to tell about it.
It can fail. Got that? Are you taking this seriously? You should. fork can fail. Just like malloc, it can fail. Neither of them fail often, but when they do, you can't just ignore it. You have to do something intelligent about it.
People seem to know that fork will return 0 if you're the child and some positive number if you're the parent -- that number is the child's pid. They sock this number away and then use it later.
Guess what happens when you don't test for failure? Yep, that's right, you probably treat "-1" (fork's error result) as a pid.
That's the beginning of the pain. The true pain comes later when it's time to send a signal. Maybe you want to shut down a child process.
Do you kill(pid, signal)? Maybe you do kill(pid, 9).
Do you know what happens when pid is -1? You really should. It's Important. Yes, with a capital I.
Here, I'll paste from the kill(2) man page on my Linux box.
If pid equals -1, then sig is sent to every process for which the calling process has permission to send signals, except for process 1 (init), ...
See that? Killing "pid -1" is equivalent to massacring every other process you are permitted to signal. If you're root, that's probably everything. You live and init lives, but that's it. Everything else is gone gone gone.
Do you have code which manages processes? Have you ever found a machine totally dead except for the text console getty/login (which are respawned by init, naturally) and the process manager? Did you blame the oomkiller in the kernel?
It might not be the guilty party here. Go see if you killed -1.
Unix: just enough potholes and bear traps to keep an entire valley going.
The strangest place I've ever coded... I woudn't say it was the strangest, but definitely the least expected?
The hospital's recovery room after my second child.
I was working at/in Hell at the time (see previous rants concerning API Guy and the asshole salesman CEO). Said salesman douchebag ceo bossman had no recollection of me being expecting, going to the hospital, or even why I was there (and if he did, he wouldn't have cared at all). He still insisted I work on his shit features because they were so important for his ever-so-important client and their new signups that they were going to do anyway. I loathe him so fucking much.
Anyway, the feature in question was pretty tiny: during the new client onboarding process, if the client came from a specific affiliate link, the frontpage should change to reflect that affiliate's branding -- different background, a custom header, etc. It was pretty easy to do, though I made certain he didn't know that. During an hour while everyone else was asleep (and while I wasn't passing out from exhaustion), I pulled out my macbook air and built his stupid feature next to my hours-hold newborn.
Did I get any appreciation for that? Sure! He showed appreciation by not yelling at me for a few days. But only because he thought the feature was difficult and that I got it done quickly, not because anything else was difficult. Asshole.
Yes, I told him several times before and several times more afterward. I don't know what goes though his head or how it even works, but it didn't seem like a big deal to him, and he kept forgetting, or maybe he just pretended to listen like he always did. Fucking asshole apparently never heard of maternity leave. I could rant and swear and curse and fume and rage about him for years 🤬 I can't believe I was so excited when I netted that job.
But anyway, building the feature was actually kind of relaxing. I organized and wrote the entire project myself, so working with it was a pleasure, and it was an easy change that I could abstract nicely and cleanly. I totally didn't mind doing it, and actually kind of enjoyed it. I just hated who I was doing it for, and that he didn't fucking care. Used and abused? absolutely. I hope he dies in the most painful, gruesome way possible. Spaghettification might not even be awful enough7
kernel: Out of memory: Kill process 3396 (postgres) score 167 or sacrifice child
Anyone has a child that I can borrow?5
Do you know that programmers are murderers ?
We kill everyday hundreds of children.
And none of us realize it.6
Friend who i set up server for calls me while im on work lunch calls me and it goes like this:
FR: Hey man you remember that server you setup for me ?
FR: Well you see i did an update and now the code you wro..
Why the fuck did you do full upgrade on custom system ?
FR: Well the PHP server was versions behind
Well then update just PHP and the binaries you need or just do normal update not full upgrade to different version of system.
FR: Well OK anyways the parent tries to kill its own child.
WHAT ? Parent is trying to kill its own child ? WTF did you do ? The abort function was never supposed to run only when things are really really fucked up.
FR: Well shit
Well if parent kills its own child then we are screwed and you will have to restore the backup.
FR: Wellllllllllll last back up is from 2 weeks ago.
WHAT ? WHY ? i set it up to backup every day.
FR: Well yes but that was eating too much space so i made it to backup every 2 weeks.
You are an idiot you know that ?
OK i will clean up the mess you made when i come home.
*/Then i realized im on lunch with full room of non tech people/* Ah shit.
Then i had to explain to non tech people what is child and parent process in coding and how parent kills child in code.
And BTW the server got fixed. It was just that he updated few libraries too and well path changed in one of them so it coudlnt find it. Easy fix thankfully.2
Im so fucking pissed. so in my family (im an only child) im the computer expert. but everytime i touch something EVERYONE THINKS IM GOING TO BREAK IT OR TELL ME I DONT KNOW WHAT IM FUCKING DOING. FUCKING EXCUSE ME?
I pick up the laptop and unplug it and she yells at me because the IT man told her it wouldnt work if she unplugged it. So i told her im done helping her with all her bullshit she can do what she wants. and comes in says it works now and she doesnt know why. then goes out and buys a new laptop bc she cant process moving her files on the cloud or a flashdrive.
my entire fucking family is like this.
S E N D H E L P .7
Fun Fact: Did you know that git clone starts a child process for downloading the repo but the parent process terminates, therefore working in an asynchrone way so &&-ing the next instruction, which might rely on those files, won't help you?
Well now you know, and so do I.
Fornicating piece of excrement, what a fun afternoon.16
I had a manager who scolded me in me in public on a non-IT floor because I used child classes and overloading of methods which "is too hard to read". Instead use "lots of ifs and else's". This is the guy that had a JSP so large (be cause he had so many ifs) that it couldn't be compiled even on a server.
The best karma happened a few months later. I was looking for a new job (wonder why?) and was very deep in the interview process - like round 5- of company A. I got talking to this jackass, who had no idea I was interviewing, said "yeah I applied to company A once. Couldn't get past the first round. Great benefits, though.". Me getting the job a week later was the best thing ever.
I’m sure many of you are well aware of this, but I just ran across this today and found it amusing. Apparently, Chrome uses the term “zygote” to identify child processes. 😁2
That time you think you found your dream dev job...
But they really just needed a content entry person so the other dev could add 'senior' to his title and work on all the new fun projects, while you're stuck fixing IE7 bugs in his code from 3 years ago.
He used prototype instead of jQuery.
You try to tell them about responsive design, but they think everything needs a separate mobile version.
You spend half the day learning his custom functions to a cms he built 2 years ago, and he's in the process of rebuilding a new cms from the ground up, so you have to learn the new version too.
Was fired 3 days before my birthday, and didn't get my company gift, even though I contributed to every one else's gifts.
Fired 2 months before birth of my child so lost my insurance.
After my time there... They now build responsive, they now use jQuery for everything. I also showed them how to do IE testing with virtual box, instead of them using the secretary's computer.7
So I'm writing some multithreaded shit in C that is supposed to work cross-platform. MingW has Posix threads for Windows, so that saved already half of the platform dependency. The other half was that these threads need to run external programs.
Well, there's system(), right? Uhm yes, but it sucks. It's incredibly slow on Windows, and it looks like you can have only one system() call ongoing at the same time. Which kinda defeats the multithreaded driver. Ok, but there's CreateProcessA(), and that doesn't suck.
Fine, now for Linux. The fork/exec hack is quite ugly, but it works and is even fast. Just never use fork() without immediate exec(). First try under Cygwin... crap I fork bombed my system! What is this shit? Ah I fucked up the path names so that the external executable couldn't be run.
Lesson learnt: put an exit() right after the exec() in the path for child process. Should never be reached, but if it goes there, the exit() at least prevents a fork bomb.
Well yeah, sort of works under Cygwin, but only with up to 3 threads. Beyond that, it seems like fork() at some point gives two processes the same PID, and then shit hangs.
Even slapping a mutex around the fork and releasing it only in the parent process didn't help. Fork in Cygwin is like a fork in the ass. posix_spawn() should work better because it can be mapped more easily to the Windows model, but still no dice.
OK, testing under real Linux. Yeah, no issues with that one! But instead, I get some obscure "free(): invalid size" abort. What the fuck would that even mean?! Checking my free() calls: all fine.
Time to fire up GDB in the terminal! Put a catch on the abort signal, mh got just hex data. Shit I forgot to compile with -O0 and -g. Next try. Backtrace shows the full call trace, back to the originating line in my program - which is fclose() on a file.
Ahhh I remember! Under Linux, fclosing a file that is already closed makes the program crash. So probably I was closing it twice. Checking back.. yeah that's where it was.
Shit runs fast on several cores now!8
I started my internship at the end of the year..
Fuck my ass!!! This code I have to work with is a huge pile of shit.
The code base I need to work with is around 40k LOC. It is a mixture of C++, C, Java, Python, Bash and I think I saw some lonely js files around.
A list of awesome parts:
- Paths are hard coded.
- Redundant code everywhere
- No documentation or inline comments available
Most of the comments in the code are just old code that is not used anymore. But the cherry on the turd is the class that should provide all kind of useful functions in my daily routine. About ninety percent of the functions have the same description or nothing. Sometimes a function name says "readSomethingFromSomewhere" but instead it writes something to a file. It is really confusing and I need to check everything twice instead of rely on what the function name promises.
I have also learned why copy paste isn't that good. The brief descriptions of every method in a files are always the same.
getName() - Description: Fork child process
getIp() - Description: Fork child process
getIpv6() - Description: Fork child process.
Surprise: None of these functions forks a child process. :D
Another awesome feature is the thing that they store up to five different versions of libraries. Everyone with slight modifications but no hint which one you need to use. Sometimes it is the newest, sometimes the oldest which is running in production. Another case of try and error.
Oh and my dev machine is a potato with a power supply and a fan. I started with NetBeans and every time I compiled the code it sounds like the machine wants to lift off and leave for a better place. (At this point I switched to Emacs and everything runs smoothly now)
At first I thought that I'm just not that good at coding and understanding a big project from scratch but some colleagues have the same problem. The whole system is very inflexible and it is all about "std::cout"-debugging to check if your changes do what you want them to do.
Currently I'm just trying to fix this mess to make the life for the next student or employee easier. The first month was just frustrating as hell. I need to ask so many questions and most of the time the answer was "I don't know, haven't touched this code in years". Needless to say that my progress isn't that awesome but at least I get a nice payment for 20 hours of work a week.3
You know a server is having a jolly'ol time when, while logging through the serial console, it lags... Then, a few seconds later, you get a message
[time.seconds] Out of memory: Kill process PID (login) score 0 or sacrifice child
[time.seconds] Killed process PID (login) total-vm:65400kB, anon-rss:488kB, file-rss:0kB
10/10, only way to bring the server back to life was by a hard-reset :|3
When the OS literature teaches you that processes aren't cows since cows needs two parents to spawn a child while a process only needs one.3
So I saw many „Merry Christmas“ posts here lately.
But many of you may have forgotten that 25th of December is the birthday of the greatest physician and mathematician of all time — Isaac Newton! So let's celebrate the existence of comprehensible physical laws!
One way to celebrate Grav-Mass is to decorate a tree with apples and other fruits. Glue them or attach them, but not too well! The idea is that occasionally a fruit should fall. Put them on the tree no more than 2 feet up, so that they won't get damaged or hurt anybody when they fall. Investigating and perfecting the methods for doing this is a great way expose a child to the process of scientifically studying the behavior of the physical world.
Merry Grav-Mass and happy New Year! 🍎
Further reading: https://stallman.org/grav-mass.html4
Sooo a coworker and I tonight were working on some software and somehow got side tracked on discussion regarding our thinking process, and how one of our other coworkers always things so strangely always defensive etc.. which then lead us to saying it would be nice if we could like see and feel how another persons brain is and how they draw conclusions and think..
this conversion immediately changed to the inner-monologue discussion.
And holy shit went go distracted for 4 hours tonight!
I have inner monologue, visual, auditory, symbolic and non symbolic abstract thinking in my mind, and it’s all happening at the same time, like a million miles a minute.
The other coworker has no inner monologue at all.
4 hours questioning each other trying to understand how the other one things then debating what we believe how the one perticular Coworker thinks. And then placing bets on what we think all the other coworkers are.
I’ve never had such a deep discussion on how my brain works nor how someone else thinks.
Like I was like joking but serious not in a bad way I’m not crazy my brain switches thinking depending on the situation I don’t have to. Try or think about it just occurs..
Like remembering things I’ll daisy chain and hop pictures, words and thoughts to bring back things but no effort it just occurs.
When a song is playing I can remember the last time I heard that song or part of the song I can feel how it was, I can see what I was doing what was happening in the world etc.
In the shower or driving I will have debates in my mind and play scenarios out in my mind on how a conversation or situation will go. I visually see and hear and feel the conversation that did or did not occur at that time. And I can jump to “playing” each person.
Or when a large decision is to be made or brainstorming an idea to me I like having the British parliament in a room, and debating the topic.
When people are talking I visually see what they are saying.
I thought EVERYONE was like this.. apparently not lol.
But this conversation did bring up a lot of realization of why I can quickly jump to conclusions or quickly move thru a conversation or concept but my coworker is lagging behind. Or having a hard time visualizing what I’m saying, thus me drawing it very fast and him/them saying how did you come up with that that quickly... ugh because in my mind I’ve already drew it up I’m just drawing what I see. Almost having to slow down and go back in time to explain something to them.
THEN we called a few of my “Star” interns haha and asked them, apparently they are all think the same way I do or atleast somewhat, which explains why some people I work i able to express ideas and continue thru a topic very quickly. While others I must slow down.
We need more of these discussions until now I had no idea there was “a different way people mentally process things” the entire conversation was very enlightening for the both of us, now I know what I must do differently and so does the other one.
But then we thought what caused this? Is this a learned trait from experience as a child? Or evaluation? Or just the deck of cards we are delt? Is this left hand people or right hand? I’m left hand and the two interns are left hand and they think the same, but the other coworker in the discussion was a right hander.. then we thought was this a result of imaginary friends as a young child? Was this a result of reading as a young child? Is one version better at math than the other.. music etc... is this a result of hyperactive brain? Drugs? Could drugs induce it? What does alcohol do to it...
Yeah we questioned all these things and more seriously went down the rabbit hole tonight... lmfao, tomorrow we will be surveying the rest of the team to see if we can draw any spurious informer conclusions and how accurate our bets were based on what we know personality wise of the other coworkers
SOOOOO thoughts???? Hahah
How many of y’all knew the other type existed? What type are you? And are you introverted or extroverted? Any rational relations we can connect to better explain this shit?9
I'm fine with people who use tabs rather than spaces, and fine with people who use the opposite. But I don't understand the thought process of the mutant child of these two polar opposites.3
1. Project Manager is a Person who thinks nine Women can deliver a baby in One month.
2. Developer is a Person who thinks it will take 18 months to deliver a Baby.
3. Onsite Coordinator is one who thinks single Woman can deliver nine babies in one month.
4. Client is the one who doesn’t know why he wants a baby.
5. Marketing Manager is a person who thinks he can deliver a baby even if no man and woman are available.
6. Resource Optimization Team thinks they don’t Need a man or woman; They’ll produce a child with zero resources.
7. Documentation Team thinks they don’t care whether the child is delivered, they’ll just document 9 months.
8. Quality Auditor is the person who is never happy with the PROCESS to produce a baby.
9. Tester is a person who always tells his wife that this is not the Right baby.
Trying to explain to (a more experienced) dev why it's not a god idea to do a exec( php '/var/www/xxx >> /dev/null) and then redirect the visitor.
The script is running a query that take some time and he want's to redirect the visitor and then fetch the result with jquery.
Tried to explain parent and child processes and pointed him in the direction with pipes and bakground process. After some discussion about forking and all the cons with that.
yes its PHP ;)
Gonna be exiting to see his next idea :S
Colin Rickels [10:24 AM]
I am trying to write a program in c which forks a process and exec another program i wrote. I want to redirect output of child program to parent program then after getting that output parent will check some conditions and if they are true then it will resume child program and will do more stuff. I have successfully redirected output of child to parent using pipes then I wrote code which should be read in child program but it isn't getting read. I tried by passing pipe read and write ends as cmdline arguments to child program but it isn't reading. It is blocking at that particular point. Stuck for more than 5 hours at this. Can anyone help me here? Fml :-(