printf isn't async-signal-safe. That's why your code might not do what it's supposed to do. I suggest using write(). It's a little trickier to use but at least it should always work