> How much of this is due to problems with C or C++, and how much is simply due to a lack of other languages for systems programming?
You mean lack of Algol, Mesa, Modula-2, Modula-3, Ada, Oberon, Oberon-2, Component Pascal, Object Pascal, Delphi, .... ?
C became ubiquous when UNIX got adopted as the enterprise OS, slowly replacing the mainframes.
Like JavaScript in browsers or Objective-C in iOS, targeting UNIX meant using C, back in the day companies would pay for UNIX SDKs.
No sane company would buy another compiler when they already had to pay for a C one, the official language.
The other OS vendors started to offer C compilers in their tools to ease the transition between the new UNIX workstations and their other OS.
So alternative saner systems programming languages wither way as C grew stronger and now we are with this problem.