If I strace arecord, i see that arecord spawns one child process, which will repeat the following actions
write(6, "W", 1) = 1
write(6, "W", 1) = 1
write(6, "W", 1) = 1
read(5, "WWW", 10) = 3
write(7, "\1\0\0\0\0\0\0\0", 8) = 8
read(5, 0xb2789c30, 10) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}], 3, 1498) = 1 ([{fd=9, revents=POLLIN}])
read(9, "\1\0\0\0\0\0\0\0", 8) = 8
read(5, 0xb2789c30, 10) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}], 3, 1496) = 0 (Timeout)
getpid() = 12713
the pif returned from getpid() is the pid of the parent process.