Codeschnipsel in einen abgerundeten grauen Rahmen setzen?

Codeschnipsel in einen abgerundeten grauen Rahmen setzen?

Ich möchte Codeschnipsel vor einem gräulichen Hintergrund mit einem abgerundeten Rahmen hervorheben. Dies gelingt mir teilweise mit mdframed, die Beschriftung liegt jedoch innerhalb des Rahmens.

Ich habe es auch codeboxmit versucht:

\newtcblisting{codebox}[1]{
    arc=4pt,
    colback=GitHubGray,
    boxrule=0.5pt,
    breakable,
    listing only,
    listing options={
        caption={#1},
        label=lst:label
    }
}

Allerdings ist die Lösung nicht sehr schön. Ich bevorzuge eine herkömmliche Beschriftung, die ich \listoflistingsspäter verwenden kann.

\documentclass{article}

\usepackage{lipsum}
\usepackage{color}
\usepackage{listings}
\usepackage[framemethod=tikz]{mdframed}

\definecolor{GitHubGray}{rgb}{0.9,0.9,0.9}

\lstset{
    language=c,
    breaklines=true,
    keywordstyle=\bfseries\color{black},
    basicstyle=\ttfamily\color{black}\fontsize{9pt}{10pt}\selectfont,
    emphstyle={\em \color{gray}},
    keepspaces=true,
    showspaces=false,
    showtabs=true,
    tabsize=2,
    upquote=true,
    aboveskip=2pt,
    belowskip=2pt,
    framexleftmargin=2pt,
    extendedchars=true,
    inputencoding=utf8,
}

\mdfsetup{%
  roundcorner=4pt,
  innerleftmargin=2mm,
  innertopmargin=4.5mm, % Magical value
  %linecolor=black!50,%
  innerbottommargin=1mm, % Magical value
  backgroundcolor=GitHubGray
}

\begin{document}
\section{Example}
\lipsum[1]

\begin{mdframed}
\begin{lstlisting}[caption={caption text},label=lst:label]
#include <stdio.h>

int main(int argc, char **argv) {
    printf("Hello, world!\n");
}
\end{lstlisting}
\end{mdframed}

\lipsum[2]
\end{document}

Gibt es eine Möglichkeit, dies ohne die magischen Konstanten (oberer/unterer Rand) und idealerweise mit weniger Standardtext (kein zusätzliches \begin/ \endetwas vor und nach dem lstlisting) zu erreichen?

Ist das möglich?

Bildbeschreibung hier eingeben

verwandte Informationen